package com.brand.data.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author scl
 * @date 2018年4月13日 上午10:03:22
 * @version 1.0
 * @description API测试接口
 */
public class StringUtil {
	/**
	 * 含有unicode 的字符串转一般字符串
	 * 
	 * @param unicodeStr
	 *            混有 Unicode 的字符串
	 * @return
	 */
	public static String unicodeStr2String(String unicodeStr) {
		int length = unicodeStr.length();
		int count = 0;
		// 正则匹配条件，可匹配“\\u”1到4位，一般是4位可直接使用 String regex = "\\\\u[a-f0-9A-F]{4}";
		String regex = "\\\\u[a-f0-9A-F]{1,4}";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(unicodeStr);
		StringBuffer sb = new StringBuffer();

		while (matcher.find()) {
			String oldChar = matcher.group();// 原本的Unicode字符
			String newChar = unicode2String(oldChar);// 转换为普通字符
			int index = unicodeStr.indexOf(oldChar);

			sb.append(unicodeStr.substring(count, index));// 添加前面不是unicode的字符
			sb.append(newChar);// 添加转换后的字符
			count = index + oldChar.length();// 统计下标移动的位置
		}
		sb.append(unicodeStr.substring(count, length));// 添加末尾不是Unicode的字符
		return sb.toString();
	}

	/**
	 * 字符串转换unicode
	 * 
	 * @param string
	 * @return
	 */
	public static String string2Unicode(String string) {
		StringBuffer unicode = new StringBuffer();
		for (int i = 0; i < string.length(); i++) {
			// 取出每一个字符
			char c = string.charAt(i);
			// 转换为unicode
			unicode.append("\\u" + Integer.toHexString(c));
		}

		return unicode.toString();
	}

	/**
	 * unicode 转字符串
	 * 
	 * @param unicode
	 *            全为 Unicode 的字符串
	 * @return
	 */
	public static String unicode2String(String unicode) {
		StringBuffer string = new StringBuffer();
		String[] hex = unicode.split("\\\\u");

		for (int i = 1; i < hex.length; i++) {
			// 转换出每一个代码点
			int data = Integer.parseInt(hex[i], 16);
			// 追加成string
			string.append((char) data);
		}

		return string.toString();
	}
	/**
	 * 提取字符串中的数字
	 * @param str
	 * @return
	 */
	public static String getNums(String str){
		String regEx="[^0-9]"; 
		Pattern p = Pattern.compile(regEx); 
		Matcher m = p.matcher(str);
		return m.replaceAll("").trim();
	}
	public static String formatDateStr(String str){
        try {
            String nums = getNums(str);
            nums = nums.substring(0,8);
            StringBuffer sb = new StringBuffer(nums);
            sb.insert(4, "-");
            sb.insert(7, "-");
            return sb.toString();
        } catch (Exception e) {
        }
        return str;
    }
}
